iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
佛心分享-我的私藏工具箱

開發環境設定指南及工具分享系列 第 21

Day21-[Hands-on]手把手設定cloudflared-tunnel

  • 分享至 

  • xImage
  •  

今天我想先介紹這個好用的內網穿透的服務 cloudflared tunnel

以往我們想要將自己電腦內的服務提供給其他人使用的時候,比較常見的是會使用ngrok這類的服務來把自己電腦的某一個port連到某一個網址,這時候將這個網址提供給另一個人,就可以將服務的流量透過ngrok的服務導傳到你的電腦上

但會遇到一個困擾是,ngrok的免費版本,如果重開了ngrok,他的網址會變,所以如果電腦重新開機會是需要重新設定port的話,原本的連結就會失效,而這時候,cloudflared tunnel就可以有效的解決這個問題

cloudflared tunnel一樣可以有提供流量轉發的功能,而且他可以透過在網站上的設定,設定一組網域,將流量直接導傳到你的服務中,所以網址不會變,而且還可以根據你的服務,設定一組有意義的domain,更棒的是,因為cloudflare本身就有提供不錯的防火牆功能,再加上還可以透過將指定網址設定email驗證,來達到某種程度的mfa功能,根本是免費仔的天堂!!

說了這麼多,我們來介紹應該怎麼設定他,以下會由上到下依序的說明步驟,並且會註明線這設定的是本機的電腦還是cloudflare的網頁,本機的電腦我用mac來代替

Cloudflare

將網域託管於cloudflare

將cloudflare的name server(名稱伺服器/ns)設定到你購買的domain的服務商的設定畫面中,以下附上我在cloudflare跟godaddy的設定畫面的擷圖,大家可以找一下相關的畫面

建立一個 cloudflared tunnel

  • 先回到首頁,並點選zero trust
  • 點選 Network > Tunnel
  • 點選cloudflared並設定名字

  • 點選docker並將內容複製下來,內容會類似下面這樣,但token你的會跟我的不一樣,這邊用eyJhIjoiYzE2MjpNdyJ9作為接下來示範的token,實際上的token會比我的更長,然後先不要關掉這個頁面,接下來會用到
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token eyJhIjoiYzE2MjpNdyJ9

Mac

  • 打開docker,如果要設定成server,要想辦法讓電腦啟動之後自動打開docker(看要掛成service還是docker的ui可以設定)
  • 建立一個docker network,名稱為cloudflared_tunnel,模式使用bridge
docker network create -d bridge cloudflared_tunnel
  • 創建一個docker-compose.yaml,並將以下內容放上,並將你從上方拿到的token放進去
version: "3.9"

networks:
    cloudflared_tunnel:
        driver: bridge
        external: true
services:
  nginx:
    container_name: demo_nginx
    image: nginx:latest
    networks: ['cloudflared_tunnel']
  cloudflared:
    container_name: cloudflared_tunnel
    image: cloudflare/cloudflared:latest
    restart: unless-stopped
    networks: ['cloudflared_tunnel']
    command: tunnel run
    environment:
      - TUNNEL_TOKEN=eyJhIjoiYzE2MjpNdyJ9

  • 啟動他
docker compose up -d
  • 看他的logs
docker compose logs -f

Cloudflare

設定domain跟服務的關聯

  • 回到剛剛cloudflared tunnel設定docker token那頁,會發現下方出現了一個connector,這樣就表示你剛剛啟動的tunnel有順利連到cloudflared tunnel的server了 ,連到之後點選下方的Next
  • 在這邊要設定tunnel的哪個對外domain要跟對內的服務連接
    • subdomain要填上你想要設定的對外網址的前綴
    • service要設定在mac裡面的cloudflared tunnel怎麼樣連到你設定好的服務,在剛剛的docker-compose.yaml中,如果要從cloudflared_tunnel去拜訪demo_nginx這個服務,可以用http://demo_nginx:80來拜訪
    • 都設定完成後,點選完成
  • 此時,你就可以在網址列打上 https://ithome2025-tunnel-nginx.kevinyay945.com 就可以順利拜訪你的服務摟

設定特定網址的email驗證

  • 進到 Access>Application,創建一個application
  • 點選 Self-hosted
  • 設定這個application的名稱,點選 add public hostname並設定你想要保護的網址,在後面的path的部分,可以讓你指定說特定的路徑下才保護(比如wordpress的/wp-admin.php,或是其他服務的登入的路徑)
  • 滾到下方,將Login method的選項關掉,並且讓one-time pin打開,都設定完成後,其他就先按下一步,直到完成
  • 此時,再回到你剛剛設定好的網址 https://ithome2025-tunnel-nginx.kevinyay945.com/ ,就會出現下面這個網頁,此時只要輸入你註冊時驗證的email,就會收到pin碼,打進去之後就可以正常使用了

    這個教學文就打到這邊,但他裡面其實還有好多功能可以使用,如果有興趣的都可以研究,比如他的worker功能,email收發功能,R2的cdn功能,還有cache的設定等等,這些服務都有蠻高額度的自用額度,在各種自架服務上真的可以省下不少錢,大大推薦!!

上一篇
Day20-自架方案分享
下一篇
Day22-設定第一個自架服務
系列文
開發環境設定指南及工具分享25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言